garmin_fit: Added allpoints option to convert all points even if they do not have...
authortovisen <tovisen@users.noreply.github.com>
Mon, 18 Apr 2016 06:17:21 +0000 (08:17 +0200)
committerTove Petersson <tovisen@users.noreply.github.com>
Sun, 28 Aug 2016 12:23:38 +0000 (14:23 +0200)
garmin_fit.cc
reference/track/garmin-vivosmart-hr.fit [new file with mode: 0755]
reference/track/garmin-vivosmart-hr.gpx [new file with mode: 0644]
testo.d/garmin_fit.test

index c7cf88565d748bd281ff305304f50b0b52d34eea..21ba61be3d4cf7558974d1c97be074e159b0b3a4 100644 (file)
 
 #define MYNAME "fit"
 
+static char* opt_allpoints = NULL;
+
 static
 arglist_t fit_args[] = {
+  {
+    "allpoints", &opt_allpoints,
+    "Read all points even if latitude or longitude is missing",
+    NULL, ARGTYPE_BOOL, ARG_NOMINMAX, NULL
+  },
   ARG_TERMINATOR
 };
 
@@ -411,13 +418,17 @@ fit_parse_data(fit_message_def* def, int time_offset)
   }
   switch (def->global_id) {
   case 20: // record message
-    if (lat == 0x7fffffff || lon == 0x7fffffff) {
+    if ((lat == 0x7fffffff || lon == 0x7fffffff) && !opt_allpoints) {
       break;
     }
 
     waypt = new Waypoint;
-    waypt->latitude = (lat / (double)0x7fffffff) * 180;
-    waypt->longitude = (lon / (double)0x7fffffff) * 180;
+    if (lat != 0x7fffffff) {
+      waypt->latitude = (lat / (double)0x7fffffff) * 180;
+    }
+    if (lon != 0x7fffffff) {
+      waypt->longitude = (lon / (double)0x7fffffff) * 180;
+    }
     if (alt != 0xffff) {
       waypt->altitude = (alt / 5.0) - 500;
     }
diff --git a/reference/track/garmin-vivosmart-hr.fit b/reference/track/garmin-vivosmart-hr.fit
new file mode 100755 (executable)
index 0000000..91edeff
Binary files /dev/null and b/reference/track/garmin-vivosmart-hr.fit differ
diff --git a/reference/track/garmin-vivosmart-hr.gpx b/reference/track/garmin-vivosmart-hr.gpx
new file mode 100644 (file)
index 0000000..c18dfb2
--- /dev/null
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.1" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1">
+  <metadata>
+    <time>1970-01-01T00:00:00Z</time>
+    <bounds minlat="0.000000000" minlon="0.000000000" maxlat="0.000000000" maxlon="0.000000000"/>
+  </metadata>
+  <trk>
+    <trkseg>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:04Z</time>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:18Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>81</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:19Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>84</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:20Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>86</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:21Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>87</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:23Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>88</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:24Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>89</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:25Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>90</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:26Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>91</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:29Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>92</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:32Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>93</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:33Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>94</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:34Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>95</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:35Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>96</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+      <trkpt lat="0.000000000" lon="0.000000000">
+        <time>2016-04-07T10:36:36Z</time>
+        <extensions>
+          <gpxtpx:TrackPointExtension>
+            <gpxtpx:hr>97</gpxtpx:hr>
+          </gpxtpx:TrackPointExtension>
+        </extensions>
+      </trkpt>
+    </trkseg>
+  </trk>
+</gpx>
index 3a227a6c4f8b5fc672664e33456728379bf89253..a6a8d6b61eb4a1cc372c60bcbc7a9b7205f507a2 100644 (file)
@@ -13,3 +13,6 @@ compare ${REFERENCE}/track/garmin-edge-800-output.gpx ${TMPDIR}/fit-sample-800.g
 
 gpsbabel -i garmin_fit -f ${REFERENCE}/track/garmin-forerunner-10.fit -o gpx -F ${TMPDIR}/fit-sample-10.gpx
 compare ${REFERENCE}/track/garmin-forerunner-10-output.gpx ${TMPDIR}/fit-sample-10.gpx
+
+gpsbabel -i garmin_fit,allpoints -f ${REFERENCE}/track/garmin-vivosmart-hr.fit -o gpx,garminextensions -F ${TMPDIR}/fit-sample-vivosmart-hr.gpx
+compare ${REFERENCE}/track/garmin-vivosmart-hr.gpx ${TMPDIR}/fit-sample-vivosmart-hr.gpx